package com.itheima.demo;

import com.itheima.domain.Person;

import java.util.Arrays;
@SuppressWarnings("all")
public class Demo_Stream003 {
    public static void main(String[] args) {
        //现有字符串如下，字符串包含了多个人的信息，将每一个人信息封装成Person对象，并排除掉小于18岁的人
        //String str = "张三,18,西安\n李四,15,北京\n王五,23,深圳\n赵六,10,广州\n田七,40,上海"
        String str = "张三,18,西安\n李四,15,北京\n王五,23,深圳\n赵六,10,广州\n田七,40,上海";
        String[] person = str.split("\n");
        //System.out.println(Arrays.toString(person));
        //将person转换成stream流,调用Arrays中的stream方法;
        Arrays.stream(person).map(p->{
            String[] p1 = p.split(",");
            return new Person(p1[0],Integer.parseInt(p1[1]),p1[2]);
        }).filter(p2 -> p2.getAge()>=18).forEach(person1 -> System.out.println(person1));
    }

    private static void method003(String[] person) {
        Arrays.stream(person).map(p -> {
            //将得到的每一个p对象进行切割;
            String[] p1 = p.split(",");//得到装有元素的数组,然后将元素封装到对象当中返回;
            return new Person(p1[0], Integer.parseInt(p1[1]), p1[2]);//调用filter过滤方法;
        }).filter(p2 -> p2.getAge() >= 18).forEach(person1 -> System.out.println(person1));
    }

    private static void method002(String[] person) {
        Arrays.stream(person).map(p -> {
            String[] p1 = p.split(",");
            return new Person(p1[0], Integer.parseInt(p1[1]), p1[2]);
        }).filter(p2 -> p2.getAge() >= 18).forEach(person1 -> System.out.println(person1));
    }

    private static void method001(String[] person) {
        Arrays.stream(person).map(s -> {
            String[] p = s.split(",");
            return new Person(p[0], Integer.parseInt(p[1]), p[2]);
        }).filter(person1 -> person1.getAge() >= 18).forEach(s -> System.out.println(s));
    }
}
